CAPTOR FUND MANAGEMENT

An introduction to the openseries Python package

First we set it all up

In [1]:
from openseries.frame import OpenFrame
from openseries.series import OpenTimeSeries

from plotly.offline import init_notebook_mode
from plotly.offline import iplot
In [2]:
init_notebook_mode()

Here we fetch NAV (price per unit) for some of the Captor mutual funds

In [3]:
basket = OpenFrame(
    [
        OpenTimeSeries.from_open_nav(isin="SE0009807308"),
        OpenTimeSeries.from_open_nav(isin="SE0011337195"),
        OpenTimeSeries.from_open_nav(isin="SE0011670843"),
    ], weights=[
        0.25, 
        0.25, 
        0.50])

basket = basket.trunc_frame().to_cumret()

We then make a portfolio of the funds based on the provided weights

In [4]:
portfolio = OpenTimeSeries.from_df(basket.make_portfolio("Portfolio"))
basket = basket.add_timeseries(portfolio)

And create a Plotly plot of all the data

In [5]:
figure, _ = basket.plot_series(tick_fmt=".1%", auto_open=False, output_type="div")

We display the plot in the notebook

In [6]:
figure = figure.update_layout(legend=dict(yanchor="bottom", y=-0.2, xanchor="right", x=0.98, orientation="h"))
iplot(figure, link_text='')

Here we calculate and display a Pandas Dataframe with some analyses

In [7]:
df = basket.all_properties(properties=[
        "arithmetic_ret",
        "vol",
        "ret_vol_ratio",
        "sortino_ratio",
        "worst_month",
        "cvar_down",
        "first_indices",
        "last_indices",
    ]
)
In [8]:
df.columns = df.columns.droplevel(level=1)

formats = [
        "{:.2%}",
        "{:.2%}",
        "{:.2f}",
        "{:.2f}",
        "{:.2%}",
        "{:.2%}",
        "{:%Y-%m-%d}",
        "{:%Y-%m-%d}",
    ]

for item, f in zip(df.index, formats):
    df.loc[item] = df.loc[item].apply(
        lambda x: x if isinstance(x, str) else f.format(x)
    )
In [9]:
df
Out[9]:
Captor Iris Bond Captor Dahlia Green Bond Captor Scilla Global Equity Portfolio
Arithmetic return -3.04% -1.71% 6.55% 2.09%
Volatility 6.14% 3.14% 12.92% 7.12%
Return vol ratio -0.49 -0.55 0.51 0.29
Sortino ratio -0.70 -0.73 0.67 0.39
Worst month -6.49% -4.83% -12.25% -7.54%
CVaR 95.0% -0.92% -0.54% -2.04% -1.13%
first indices 2019-02-12 2019-02-12 2019-02-12 2019-02-12
last indices 2022-08-04 2022-08-04 2022-08-04 2022-08-04

Thank you for listening